﻿
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>

<p>
 &nbsp;
</p>
<h1 style="text-align: center;">
    -----------------【概述】-----------------
</h1>
<p>
    <br/>ps找算替.ps1，即powershell版的sed。是一个查找替换工具软件。
</p>
<p>
    1 找、算、替、是啥意思？
</p>
<p>1.1 找。找是基础。有三种模式:<br/>
1.1.1行查找。打开文件后，先拆分成行，行内查找；<br/>
1.1.2字符串查找。打开文件后，将文件作为大字符串，在字符串中查找；<br/>
1.1.3匹配头尾查找。打开文件后，将文件作为大字符串，先在字符串中查找匹配头，再在匹配头后查找匹配尾，如此循环；</p>

<p>1.2 算。即你可以自己编写函数，用来处理找到的结果，函数运行完毕后，产生要【替】的字符串，并return它。</p>
<p>1.3 替。和【算】互斥。用输入的字符串替换找到的内容。</p>
<p>
 &nbsp;
</p>
<p style="color:red">
脚本特色&优势：<br/>
区分大小写！ 不支持正则！<br/>
使用简单，尤其是匹配头尾查找<br/>
无需转义<br/>
带有替换前，自动备份功能<br/>
文本编码功能强<br/>
多文件找替速度比sed快。例如1000个文件，sed需要fork1000次【进程】，本脚本不需要，本脚本是【线程级别】。<br/>
</p>
<p>
 &nbsp;
</p>
<p>

《ps找算替v3》
下载地址：
 <br/>https://pan.baidu.com/s/1yuqUOhY9lEw65vJ-vceg4w 



</p>
<p>
《ps找算替v3》使用手册：
 <br/>下载地址中，有个《ps找算替_v3_readme.html》

</p>
<p>
    2 我开发这个替换脚本，为了替换标准化，参数化。简化配置文件的处理。<br/>3 我认为此版足够80%用了。免费使用。<br/>4 根据需求，后续会开发正则版。或许收费。<br/>5 支持下列os。系统需求：<br/>5.1 win7 + powershell 5.1<br/>5.2 win10 + powershell 5.1<br/>5.3 linux + powershell 6.x 7.x <br/>5.4 含mac，树莓派+win，树莓派+linux，docker，alpine。
</p>
<p>
 &nbsp;
</p>
<p>
    6 问题反馈：<br/>powershell交流群<br/>QQ群号=183173532
</p>
<p>
 &nbsp;
</p>
<p>
7 版本说明：
</p>
<p>
ps找算替2.x：只支持找替。
</p>
<p>
ps找算替3.x：新增支持“算”。即你可以自己编写函数，用来处理找到的结果，函数运行完毕后，产生要【替】的字符串。
</p>
<p>
ps找算替3.15：新增英文参数别名。新增命令行用法。
</p>
<hr/>
<h1 style="text-align: center;">
    -----------------【命令行用法】-----------------
</h1>

<p>
#输入文件=utf8格式，全部替换，保存备份，<br/>
/tmp/ps找算替v3.15.ps1 -infile /tmp/a.txt -find 'SELINUX=disabled' -replace 'xxx1' 
</p>

<hr/>
<h1 style="text-align: center;">
    -----------------【ps找算替.ps1 参数说明】-----------------
</h1>
<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<span style="background-color: rgb(247, 150, 70);">-输入文件全路径</span> <span style="text-align: left; color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; font-family: sans-serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; word-spacing: 0px; display: inline !important; orphans: 2; float: none; -webkit-text-stroke-width: 0px; background-color: rgb(147, 137, 83);">字符串</span> &#39;xxx.txt&#39; 支持win决绝路径，相对路径。支持linux绝对路径，相对路径。
<br/>参数别名【-infile】
</td>
  </tr>
</table>





<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>
<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
    <span style="background-color: rgb(247, 150, 70);">-输出文件全路径</span> <span style="background-color: rgb(147, 137, 83);">字符串</span> 默认 空<br/>值：<br/>●空值。会备份输入文件。从源文件名，到，源文件名.年月日时分秒.powershell<br/>●“直接写输入文件，不需要备份”<br/>●一个输出文件路径<br/>输出文件已经存在时，会覆盖输出文件！！！
<br/>参数别名【-outfile】
</td>
  </tr>
</table>

<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>
<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
    <span style="background-color: rgb(247, 150, 70);">-输入文件编码</span>&nbsp;&nbsp; 是一个<span style="background-color: rgb(147, 137, 83);">数字</span>，如果输入文件有bom头，则会忽略此参数。<br/>默认为空，空则报错退出。也就是说必须【显式指定】此参数<br/>输入错误的编码，将导致输入文件损坏。
    数字，对应的【输入文件】编码<br/>20127=Ascii<br/>936=gbk<br/>54936=gb18030<br/>950=繁体中文BIG5<br/>1200=utf16le=Unicode<br/>1201=BigEndianUnicode<br/>12000 UTF32<br/>12001=BigEndianUTF32<br/>65001=UTF8<br/><br/>
</td>
  </tr>
</table>

<p>
 &nbsp;
</p>

<p>
 &nbsp;
</p>

<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>

<span style="background-color: rgb(247, 150, 70);">-找什么</span> <span style="background-color: rgb(147, 137, 83);">字符串</span>

<pre class="brush:ps;toolbar:false">$某找替参数 = 
@{
    找什么 =
@&#39;
这里可以有，不成对的单引号，双引号，也无需转义。不用转义，这点比sed好很多请看，下行我放入一个单引号
        &#39;
&#39;@

}

&amp; /powershell/ps找算替.ps1  @某找替参数</pre>
<p>
 &nbsp;
被查找的内容，支持内嵌变量，如：
</p>


<pre class="brush:ps;toolbar:false">$aaa = 1
$某找替参数 = 
@{
    找什么 =
@&quot;
这里可以有，不成对的单引号， $aaa 双引号，也无需转义。不用转义，这点比sed好很多请看，下行我放入一个单引号
&#39;
&quot;@

}</pre>
<br/>参数别名【-find】
</td>
  </tr>
</table>



<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>


<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>

<span style="background-color: rgb(247, 150, 70);">-找什么_块首</span> <span style="background-color: rgb(147, 137, 83);">字符串</span>

<p>
&nbsp;
块查找参数。当“查找模式 = '匹配头尾'”时，参数可用。 
</p>
<br/>参数别名【-findstart】
</td>
  </tr>
</table>


<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>

<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>

<span style="background-color: rgb(247, 150, 70);">-找什么_块尾</span> <span style="background-color: rgb(147, 137, 83);">字符串</span>
<p>
&nbsp;
块查找参数。当“查找模式 = '匹配头尾'”时，参数可用。 
</p>
<br/>参数别名【-findend】
</td>
  </tr>
</table>

<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>




<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
    <span style="background-color: rgb(247, 150, 70);">-用正则查找</span> <span style="background-color: rgb(147, 137, 83);">布尔</span> 。默认 $false 。暂不支持正则查找。<br/><br/>
</td>
  </tr>
</table>

<p>
 &nbsp;
</p>
<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
    <span style="background-color: rgb(247, 150, 70);">-区分大小写</span> <span style="background-color: rgb(147, 137, 83);">布尔</span> 。默认 $true 。暂不支持忽略大小写。<br/><br/>
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>
<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
    <span style="background-color: rgb(247, 150, 70);">-查找返回的结果必须唯一</span> <span style="background-color: rgb(147, 137, 83);">布尔</span> 默认 $true 。<br/><br/>
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>
<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
    <span style="background-color: rgb(247, 150, 70);">-查找模式</span>： <span style="background-color: rgb(147, 137, 83);">字符串</span><br/>值：<br/>●&#39;行&#39; 默认是行。行中含有查找内容，先删除此整行，用 -替换成啥 输入的【字符串】来替换。可以用来 “去除行首#号和空格”。<br/>●&#39;全文字符串&#39;，在整个文件中查找字符串。找到后，用 -替换成啥 输入的【字符串】来替换。 支持查找回车“`n”<br/>●&#39;匹配头尾&#39;。找算替v1.x版本不支持块头-块尾查找。找算替v2.x版本支持块头-块尾查找。<br/>字符串模式，和块模式，支持多行查找，跨行查找。
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>
<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
    <span style="background-color: rgb(247, 150, 70);">-找不到则在文件末尾追加</span> <span style="background-color: rgb(147, 137, 83);">布尔</span> 。默认 $false 。<br/>当 找不到则在文件末尾追加 = $false，找不到关键字，则报错退出。退出码为11。这个退出码使用场景是：<br/>查找'a'或'b'两个关键字。当其中一个找不到，那个找不到的就返回退出码11。找到的就返回0。<br/>同理，也适合于查找'a'和'b'两个关键字。<br/>当 找不到则在文件末尾追加 = $true，找不到关键字，则在文件末尾追加。
<br/>参数别名【-append】
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>

<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<span style="background-color: rgb(247, 150, 70);">-替换成啥</span> <span style="background-color: rgb(147, 137, 83);">字符串</span> 
<br/>
当【-不用替换成啥_而用ps代码替换 = $true】时，此【-替换成啥】输入的值失效。
<br/>参数别名【-replace】
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>

<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
    <span style="background-color: rgb(247, 150, 70);">-返回结果不唯一时</span> <span style="background-color: rgb(147, 137, 83);">字符串</span>。&nbsp;
    默认 &#39;只替换最后一个&#39;<br/>&nbsp;值：<br/>●&#39;只替换第一个&#39;<br/>●&#39;只替换最后一个&#39;<br/>●&#39;全部替换&#39;
</td>
  </tr>
</table>

<p>
 &nbsp;
</p>

<p>
 &nbsp;
</p>

<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
<span style="background-color: rgb(247, 150, 70);">-不用替换成啥_而用ps代码替换</span> <span style="background-color: rgb(147, 137, 83);">布尔</span>，默认=假。<br/>当值为真时，参数【替换成啥】失效。只能用下列【全局变量】：
<br/>参数别名【-usefunction】
<p>
    【查找模式=行】时，将返回 <br/>$global:行号<br/>$global:当前找算替文件_行模式&nbsp;&nbsp; 变量类型=数组
</p>
<p>
    <br/>【查找模式=全文字符串】时，将返回 <br/>$global:全文字符串查找模式_字符串开始字符_在文本中的位置<br/>$global:全文字符串查找模式_字符串结束字符_在文本中的位置<br/>$global:当前找算替文件_字符串模式&nbsp;&nbsp; 变量类型=字符串
</p>
<p>
    <br/>【查找模式=匹配头尾】时，将返回 <br/>$global:匹配头尾查找模式_块首开始字符_在文本中的位置<br/>$global:匹配头尾查找模式_块尾结束字符_在文本中的位置<br/>$global:匹配头尾查找模式_找到的字符串&nbsp;&nbsp; 变量类型=字符串<br/>$global:当前找算替文件_匹配头尾模式&nbsp;&nbsp; 变量类型=字符串
</p>
<p>
 &nbsp;
</p>
<p>
    只能用下列全局函数：<br/>function global:计算代码<br/>{<br/>&nbsp;#在这里可以调用，上述全局变量<br/>&nbsp;return &#39;a1111111111b&#39;<br/>}

</p>
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>

<p>
 &nbsp;
</p>


<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
<span style="background-color: rgb(247, 150, 70);">-输出文件编码linux</span> <span style="background-color: rgb(147, 137, 83);">字符串</span> 默认 &#39;utf8无bom&#39; 。如果输入文件有bom头，则会忽略此参数。<br/>值：<br/>●&#39;utf8无bom&#39;<br/>●&#39;utf8有bom&#39;<br/>●&#39;utf16le有bom&#39;
<p>
 &nbsp;
</p>
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>

<p>
 &nbsp;
</p>

<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
<p>
 &nbsp;
</p>
    <span style="background-color: rgb(247, 150, 70);">-输出文件编码win</span> <span style="background-color: rgb(147, 137, 83);">字符串</span> 默认 &#39;utf16le有bom&#39; 。如果输入文件有bom头，则会忽略此参数。<br/>值：<br/>●&#39;utf8无bom&#39;<br/>●&#39;utf8有bom&#39;<br/>●&#39;utf16le有bom&#39;
<p>
    输出文件，只支持上述三种编码。
</p>
</td>
  </tr>
</table>
<p>
 &nbsp;
</p>

<p>
 &nbsp;
</p>





<table border="8" width="100%" cellspacing="0" cellpadding="0"  style="border-collapse: collapse" bordercolor="#323252" align="left">
  <tr>
    <td width="100%" height="100">
    <span style="background-color: rgb(247, 150, 70);">-脚本id</span> <span style="background-color: rgb(147, 137, 83);">数值</span>&nbsp; 默认为进程id，这是脚本防止出错参数，不要修改。
<br/>参数别名【-pid】
</td>
  </tr>
</table>
<hr/>
<h1 style="text-align: center;">
    -----------------【脚本例子。脚本文件名：&nbsp;&nbsp;&nbsp; gb关闭selinux.ps1&nbsp; 】-----------------<br/><br/>
</h1>
<p>
    #本例子linux测试通过。<br/>#本例子 先把【ps找算替.ps1】保存在【/powershell/】中<br/>#本例子目的：<br/>#任何带有 SELINUX=enforcing 的行，先清空。后写入SELINUX=disabled。若找不到，则报错。
</p>
<p>
    <br/>$gb关闭selinux参数 =<br/>@{<br/>输入文件全路径&nbsp;&nbsp;&nbsp;&nbsp; = &#39;/etc/selinux/config&#39;<br/>输出文件全路径&nbsp;&nbsp;&nbsp;&nbsp; = &#39;&#39;<br/>输入文件编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 65001<br/>找什么&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = <br/>@&#39;<br/>SELINUX=enforcing<br/>&#39;@
</p>
<p>
    替换成啥&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = <br/>@&#39;<br/>SELINUX=disabled<br/>&#39;@
</p>
<p>
    查找返回的结果必须唯一 = $true<br/>查找模式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = &#39;行&#39;<br/>返回结果不唯一时&nbsp;&nbsp;&nbsp; = &#39;全部替换&#39;<br/>找不到则在文件末尾追加 = $false<br/>脚本pid = $pid # 这行用于脚本防错，不要修改。<br/>}
</p>
<p>
    <br/>&amp; /powershell/ps找算替.ps1&nbsp; @gb关闭selinux参数<br/>#注意： 这里不能用 /usr/bin/pwsh /powershell/ps找算替v1.22.ps1&nbsp; @gb关闭selinux参数
<br/>注意：你编写的ps1脚本，即“gb关闭selinux.ps1”，&nbsp;必须带有bom头。
</p>
<hr/>
<h1 style="text-align: center;">
    -----------------【脚本讲解】-----------------
</h1>
<p>
    <br/>1 先建立一个哈希表，【$gb关闭selinux参数】。powershell哈希表中的空格，tab，空行不影响哈希表的结果。<br/>2 执行【ps找算替.ps1】，按哈希表中的参数替换。<br/>3 输入文件编码 = 65001<br/>如果输入文件有bom头，则会忽略此参数。此例子无bom头，则此参数必须设置，否则报错。<br/>4输出文件全路径 = &#39;&#39;<br/>会备份文件，<br/>5查找替换完毕后，再次运行脚本，会报错“找不到关键字”
</p>
<hr/>
<h1 style="text-align: center;">
    -----------------【成品脚本1 脚本文件名：&nbsp;&nbsp;&nbsp; gb关闭sshd的dns.ps1】-----------------
</h1>
<p>
    <br/>#本例子linux测试通过。<br/>#本例子 先把【ps找算替v1.22.ps1】保存在【/powershell/】中<br/>#本例子目的：<br/>#任何带有 UseDNS,#UseDNS 的行，先清空。后写入UseDNS no。若找不到，则在文件尾部添加
</p>
<p>
    $gb关闭sshd中的dns =<br/>@{<br/>输入文件全路径&nbsp;&nbsp;&nbsp;&nbsp; = &#39;/etc/ssh/sshd_config&#39;<br/>输入文件编码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 65001<br/>输出文件全路径&nbsp;&nbsp;&nbsp;&nbsp; = &#39;&#39;<br/>&nbsp;<br/>找什么 = <br/>@&#39;<br/>UseDNS<br/>&#39;@<br/>&nbsp;<br/>替换成啥 = <br/>@&#39;<br/>UseDNS no<br/>&#39;@<br/>&nbsp;<br/>查找模式 = &#39;行&#39;<br/>找不到则在文件末尾追加 = $true<br/>查找返回的结果必须唯一 = $true<br/>返回结果不唯一时 = &#39;全部替换&#39;<br/>脚本pid = $pid # 这行用于脚本防错，不要修改。<br/>}
</p>
<p>
    <br/>&amp; /powershell/ps找算替v1.22.ps1&nbsp; @gb关闭sshd中的dns<br/>#注意： 这里不能用 /usr/bin/pwsh /powershell/ps找算替v1.22.ps1&nbsp; @gb关闭sshd中的dns
</p>
<p>
 &nbsp;
</p>
<h1 style="text-align: center;">
    -----------------【成品脚本2】-----------------
</h1>
<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>
<h1 style="text-align: center;">
    -----------------【成品脚本3】-----------------
</h1>
<hr/>
<h1 style="text-align: center;">
    -----------------【linux下安装powershell】-----------------
</h1>
<p>
 &nbsp;
</p>
<p>
    问：目前哪些linux能安装上powershell？<br/>答：<br/>◦Windows 10 IoT Core(arm32的cpu，本质上是win，树莓派硬件上的win10) <br/>◦Raspbian Stretch(arm32的cpu，树莓派官方操作系统Raspbian，基于大便，所以叫树莓便。）<br/>◦MAC OS X 10.11<br/>◦Ubuntu 14.04/16.04/18.04<br/>◦Debian 8.x/9.x <br/>◦CentOS 7.x/RHEL 7.x/Fedora27/Fedora28<br/>◦open SUSE 42及以上/SUSE Linux Enterprise Server 12 SP2及以上<br/>◦Docker。LINUX发行版中，安装容器dockerd，docker中运行powershell。<br/>◦Arch Linux （archl inux 没有版本号）<br/>◦Linux AppImage 容器(portable application single binary)&nbsp; https://github.com/probonopd/AppImageKit<br/>◦Kali Linux
</p>
<p>
 &nbsp;
</p>
<p>
    安装方法：<br/>https://docs.microsoft.com/zh-cn/powershell/scripting/setup/installing-powershell-core-on-linux?view=powershell-6
</p>
<p>
 &nbsp;
</p>
<p>
    问：目前哪些linux，可以通过snap包方式安装powershell？<br/>答：<br/>◦Arch Linux/Fedora/OpenSuSE/Solus/Gentoo Linux/Debian/Linux Mit 等任何支持snap包的发行版
</p>
<p>
    安装方法： （建议使用预览版，功能比较新，也没啥不稳定的）<br/>snap install powershell –classic&nbsp;&nbsp; #安装稳定版<br/>snap install powershell-preview –classic #安装预览版
</p>
<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>
<p>
    centos7安装powershell:(及以上)<br/>curl -o /etc/yum.repos.d/microsoft.repo&nbsp; https://packages.microsoft.com/config/rhel/7/prod.repo <br/>sudo yum remove -y powershell #删除旧版 <br/>sudo yum install -y powershell<br/>pwsh -c &#39;mkdir -p &quot;$env:HOME/.config/powershell&quot; &#39;<br/>pwsh -c &#39;Add-Content&nbsp; -Value &#39;Set-PSReadlineOption -EditMode Windows&#39; -LiteralPath $profile &#39;
</p>
<p>
    <br/>ubuntu1604：<br/>curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -<br/>sudo curl -o /etc/apt/sources.list.d/microsoft.list https://packages.microsoft.com/config/ubuntu/16.04/prod.list<br/>sudo apt-get update<br/>sudo apt-get remove -y powershell #删除旧版 <br/>sudo apt-get install -y powershell<br/>pwsh -c &#39;mkdir -p &quot;$env:HOME/.config/powershell&quot; &#39;<br/>pwsh -c &#39;Add-Content&nbsp; -Value &#39;Set-PSReadlineOption -EditMode Windows&#39; -LiteralPath $profile &#39;
</p>
<p>
    <br/>ubuntu1804：<br/>curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -<br/>sudo curl -o /etc/apt/sources.list.d/microsoft.list https://packages.microsoft.com/config/ubuntu/18.04/prod.list<br/>sudo apt-get update<br/>sudo apt-get remove -y powershell #删除旧版 <br/>sudo apt-get install -y powershell<br/>pwsh -c &#39;mkdir -p &quot;$env:HOME/.config/powershell&quot; &#39;<br/>pwsh -c &#39;Add-Content&nbsp; -Value &#39;Set-PSReadlineOption -EditMode Windows&#39; -LiteralPath $profile &#39;
</p>
<p>
 &nbsp;
</p>
<p>
 &nbsp;
</p>
<p>
    debian9：<br/>sudo apt-get update<br/>sudo apt-get install curl gnupg apt-transport-https<br/>curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -<br/>sudo sh -c &#39;echo &quot;deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main&quot; &gt; /etc/apt/sources.list.d/microsoft.list&#39;<br/>sudo apt-get update<br/>sudo apt-get remove -y powershell #删除旧版 <br/>sudo apt-get install -y powershell<br/>pwsh -c &#39;mkdir -p &quot;$env:HOME/.config/powershell&quot; &#39;<br/>pwsh -c &#39;Add-Content&nbsp; -Value &#39;Set-PSReadlineOption -EditMode Windows&#39; -LiteralPath $profile &#39;<br/>
</p>
<p>
 &nbsp;
</p>




</body>
</html>